package com.qf.xml.domain;

import lombok.Data;

/**
 *  封装统一格式返回值的实体
 *      一般封装结果是最少有①②③ 三部分数据，如果有需要，可以在这个基础上扩充
 */
@Data
public class R {

    /**
     * ① 表示操作成功或者失败的标识 （如果操作结果就只有两种）
     */
    private boolean flag;

    /**
     * ① 如果操作结果不只两种情况，boolean无法表示，此时我们一般使用状态码表示
     *     新增成功  1001
     *     新增失败  1005
     *
     *     修改成功  2001
     *     修改失败  2005
     *
     *     ....
     */
    private int code;

    /**
     * ② 操作结果的描述信息，一般在失败时，会用这个字段封装一些失败的提示...
     */
    private String msg;

    /**
     * ③ 处理成功后的结果数据
     */
    private Object data;

    /**
     * 操作成功的方法
     * @return
     */
    public static R success(Object data){
        R r = new R();
        r.setFlag(true);
        r.setData(data);
        return  r;
    }
    public static R success(String msg){
        R r = new R();
        r.setFlag(true);
        r.setMsg(msg);
        return  r;
    }
    public static R success(Object data,String msg){
        R r = new R();
        r.setFlag(true);
        r.setData(data);
        r.setMsg(msg);
        return  r;
    }

    /**
     * 操作失败的方法
     * @return
     */
    public static R error(String msg){
        R r = new R();
        r.setFlag(false);
        r.setMsg(msg);
        return  r;
    }

    public static R result(int code,Object data,String msg){
        R r = new R();
        r.setCode(code);
        r.setData(data);
        r.setMsg(msg);

        return r;
    }
}
